package com.iotechn.unimall.data.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.iotechn.unimall.data.domain.SeckillSpuDO;
import com.iotechn.unimall.data.dto.seckill.SeckillSpuDTO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;


/**
 * 
 * 
 * @author hct
 * @email 77802226@qq.com
 * @date 2020-03-21 17:27:09
 */
public interface SeckillSpuMapper extends BaseMapper<SeckillSpuDO> {

    /**
     * 获取即将开始的秒杀
     * @return
     */
    public List<SeckillSpuDTO>  latelySeckillList();

    public List<SeckillSpuDTO> getPage(@Param("offset") Integer offset, @Param("limit") Integer limit);

    public List<SeckillSpuDTO> getPageToday(@Param("offset") Integer offset, @Param("limit") Integer limit,@Param("gmtStart") Date gmtStart);

    public SeckillSpuDTO detail(Long seckillId);

    public List<Date> getGmtStartList();

    public Integer getPageTodayCount();

    public List<SeckillSpuDTO> startLastSeckillList(@Param("num") Integer num,@Param("count") Integer count);
    /**
     * 查询所有秒杀商品的记录信息
     *
     * @return
     */
    List<SeckillSpuDO> findAll();

    /**
     * 根据主键查询当前秒杀商品的数据
     *
     * @param id
     * @return
     */
    SeckillSpuDO findById(long id);

    /**
     * 减库存。
     * 对于Mapper映射接口方法中存在多个参数的要加@Param()注解标识字段名称，不然Mybatis不能识别出来哪个字段相互对应
     *
     * @param seckillId 秒杀商品ID
     * @param killTime  秒杀时间
     * @return 返回此SQL更新的记录数，如果>=1表示更新成功
     */
    int reduceStock(@Param("seckillId") long seckillId, @Param("killTime") Date killTime);

     public List<Long> selectAllSeckillSpuId();

}
